const { RESPONSE_BODY } = require('./globalParams')

/**
 * 获取请求中的'query'参数
 * @param {Object} 上下文
 */
function getQuery(ctx) {
  if (ctx?.request?.query) {
    return ctx.request.query
  }
  return null
}

/**
 * 获取请求中的'body'参数
 * @param {Object} 上下文
 */
function getBody(ctx) {
  if (ctx?.request?.body) {
    return ctx.request.body
  }
  return null
}

function toJSON(data) {
  return JSON.parse(JSON.stringify(data))
}

// 接口请求try-catch封装
async function httpHandler(fn) {
  try {
    let result = await fn()
    return RESPONSE_BODY(true, result, '操作成功')
  } catch (error) {
    throw error
  }
}

// 获取当前时间（直接用 new Date() 会有8个小时的时间差，故要加 8小时的时间戳）
function getCurDateTime() {
  let d = new Date().getTime()

  // 8小时的毫秒数
  const eightHourDateTimeStamp = 28800000
  let res = new Date(d + eightHourDateTimeStamp)

  return res
}

module.exports = {
  getQuery,
  getBody,
  toJSON,
  httpHandler,
  getCurDateTime,
}
